package com.nexgo.payment.trans.detail;

import com.nexgo.payment.BasePresenter;
import com.nexgo.payment.BaseView;
import com.nexgo.payment.databases.TransRecord;

/**
 * 交易列表接口
 *
 * @author 谭忠扬-YuriTam
 * @time 2017年08月14日
 */
public class TransDetailContract {

    interface View extends BaseView<TransDetailPresenter> {

        /**
         * 返回该交易记录并初始化视图
         *
         * @param transRecord
         */
        void onTransReceived(TransRecord transRecord);

        /**
         * 消费撤销
         *
         * @param traceNum
         */
        void showSaleVoid(String traceNum);

        /**
         * 扫码消费撤销
         *
         * @param traceCode
         */
        void showScanSaleVoid(String traceCode);

        /**
         * 预授权完成撤销
         *
         * @param traceNum
         */
        void showAuthComVoid(String traceNum);

        /**
         * 提示该流水号不存在
         */
        void showTransNotExist();

        /**
         * 提示该交易记录不存在
         */
        void showNoTransRecord();

        /**
         * 提示流水号有误
         */
        void showErrorTraceNum();

        /**
         * 提示打印机初始化错误
         */
        void showPrintInitErr();

        /**
         * 打印弹出框
         *
         * @param active
         */
        void setPrintingIndicator(boolean active);

        /**
         * 打印成功
         */
        void showPrintSuccess();

        /**
         * 打印缺纸
         */
        void showPrintLackPaper();

        /**
         * 打印完成第一联后，弹出是否确认打印第二联
         */
        void showConfirmPrintAgain();

        /**
         * 打印失败
         *
         * @param failDesc 失败描述
         */
        void showPrintFail(String failDesc);

        /**
         * 退出交易详情
         */
        void quitDetail();
    }

    interface Presenter extends BasePresenter {

        /**
         * 交易撤销
         */
        void doVoidByTransType();

        /**
         * 该交易记录是否刚刚撤销
         *
         * @return
         */
        boolean getIsChange();

        /**
         * 开始打印
         */
        void startPrint();
    }
}
